import Vue from 'vue'
import Vuex from 'vuex'

//应用Vuex中间件
Vue.use(Vuex)

//创建一个action对象，其中包含多个：用于响应组件中的“动作”的方法
const actions = {
	//一般来说，如果没有业务逻辑，那么action其实就没有存在的必要
	/* jia(miniStore,value){
		miniStore.commit('JIA',value)
	},
	jian(miniStore,value){
		miniStore.commit('JIAN',value)
	}, */

	//jiaOdd是有业务逻辑的action
	jiaOdd(miniStore,value){
		if(miniStore.state.sum % 2){
			miniStore.commit('JIA',value)
		}
	},
	//jiaWait是有业务逻辑的action
	jiaWait(miniStore,value){
		setTimeout(()=>{
			miniStore.commit('JIA',value)
		},500)
	}
}

//创建一个mutations对象，其中包含多个：用于真正修改状态的方法
const mutations = {
	JIA(state,value){
		// console.log('JIA被调用了---mutations',state,value)
		state.sum += value
	},
	JIAN(state,value){
		// console.log('JIAN被调用了---mutations',state,value)
		state.sum -= value
	}
}

//创建一个state对象，专门用于保住各个组件存储数据，（因为要帮多个组件存数据，所以值为一个对象）
const state = {
	sum:99,
}

//创建一个store对象，用于管理：actions、mutations、state
const store = new Vuex.Store({
	actions,
	mutations,
	state
})

//暴露store对象
export default store